package com.tanjun.publicservice.web.biz;

import com.tanjun.common.annotation.Edit;
import com.tanjun.common.response.PageResponse;
import com.tanjun.pubilcservice.request.config.SysConfigPageRequest;
import com.tanjun.pubilcservice.request.config.SysConfigVo;
import com.tanjun.pubilcservice.response.config.SysConfigDto;
import org.springframework.validation.annotation.Validated;

import java.util.List;

public interface SysConfigBiz {
    /**
     * 新增系统配置
     * @param paramVo 系统配置数据
     */
    void addSysConfig(@Validated SysConfigVo paramVo);

    /**
     * 修改系统配置
     * @param paramVo 系统配置数据
     */
    void updateSysConfig(@Validated(Edit.class) SysConfigVo paramVo);

    /**
     * 删除系统配置
     * @param ids 系统配置ids
     */
    void delSysConfigs(List<Long> ids);

    /**
     * 根据id获取系统配置
     * @param id 配置id
     * @return 系统配置
     */
    SysConfigDto getSysConfigById(Long id);

    /**
     * 根据系统配置key 获取系统配置值
     * @param key 系统配置key
     * @return 系统配置
     */
    String getSystemConfigValueByKey(String key);

    /**
     * 分页查询系统配置
     * @param paramVo 分区参数
     * @return 系统配置数据
     */
    PageResponse<SysConfigDto> listPageConfig(@Validated SysConfigPageRequest paramVo);

    /**
     * 清除系统配置缓存
     */
    void clearCache();
}
